package cn.juque.systemservice.api.provider;

import cn.juque.common.base.BaseResponseDTO;
import cn.juque.systemservice.api.dto.role.*;

import java.util.List;

/**
 * @author JUQUE
 * @version 1.0.0
 * <ul>
 *  <li>simple-generator</li>
 *  <li>角色信息</li>
 * </ul>
 * @date 2022-11-03 23:57:34
 **/
public interface IRoleInfoProvider {

    /**
     * 列表检索
     *
     * @param searchDTO 入参
     * @return List
     */
    BaseResponseDTO<List<RoleInfoListDTO>> list(RoleInfoSearchDTO searchDTO);

    /**
     * 查询功能列表
     * @param searchDTO 入参
     * @return list
     */
    BaseResponseDTO<List<RoleFuncListDTO>> listFunc(FuncIdSearchDTO searchDTO);

    /**
     * 详情
     *
     * @param id 主键
     * @return RoleInfoDetailDTO
     */
    BaseResponseDTO<RoleInfoDetailDTO> detail(String id);

    /**
     * 新增
     *
     * @param addDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> add(RoleInfoAddDTO addDTO);

    /**
     * 添加功能
     * @param addDTO dto
     * @return boolean
     */
    BaseResponseDTO<Boolean> addFunc(RoleRelFuncAddDTO addDTO);

    /**
     * 更新
     *
     * @param updateDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> update(RoleInfoUpdateDTO updateDTO);

    /**
     * 删除
     *
     * @param deleteDTO 入参
     * @return Boolean
     */
    BaseResponseDTO<Boolean> delete(RoleInfoDeleteDTO deleteDTO);

}
